var click=false;

function cliccato(){
    click=true; 
}


function checkEmail(emailStr) {
        var emailPat = /^(.+)@(.+)$/;
        var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";

        var validChars = "[^\\s" + specialChars + "]";
        var quotedUser = "(\"[^\"]*\")";
        var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
        var atom = validChars + "+";
        var word = "(" + atom + "|" + quotedUser + ")";
        var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
        var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");
        var matchArray = emailStr.match(emailPat);
        
        if (matchArray == null) {
            alert("L'email sembra essere sbagliata: (controlla @ e .)");
            return false;
        }
        var user = matchArray[1];
        var domain = matchArray[2];
        if (user.match(userPat) == null) {
            alert("La parte dell'email prima di '@' non sembra essere valida!");
            return false;
        }
        var IPArray = domain.match(ipDomainPat);
        if (IPArray != null) {
            for (var i = 1; i <= 4; i++) {
                if (IPArray[i] > 255) {
                    alert("L'IP di destinazione non è valido!");
                    return false;
                }
            }
            return true;
        }
        var domainArray = domain.match(domainPat);
        if (domainArray == null) {
            alert("La parte dell'email dopo '@' non sembra essere valida!");
            return false;
        }
        var atomPat = new RegExp(atom, "g");
        var domArr = domain.match(atomPat);
        var len = domArr.length;
        if (domArr[domArr.length - 1].length < 2 ||
            domArr[domArr.length - 1].length > 6) {
            alert("Il dominio di primo livello (es: .com e .it) non sembra essere valido!");
            return false;
        }

        if (len < 2) {

            var errStr = "L'indirizzo manca del dominio!";
            alert(errStr);
            return false;
        }
        return true;
    }

function displayResultLogin(modulo){

	var errore = document.getElementById("errore");
	var username = modulo.username.value;
	var password = modulo.pwd.value;


	var filter_username = /^([\w\_\.]{4,20})+$/;
	var filter_password = /^([\w]{3,12})+$/;


	if (!filter_username.test(username)){
		if(username == ""){
                    errore.innerHTML="Campo username vuoto";
                    modulo.username.focus();
                    return false;
                }
		else{
                    errore.innerHTML="Formato username errato";
                    modulo.username.focus();
                    return false;
		}
	}
	if (!filter_password.test(password)){
		if(password == ""){
                    errore.innerHTML="Campo password vuoto";
                    modulo.pwd.focus();
                    return false;
                }
		else{
                    errore.innerHTML="Formato password errato";
                    modulo.pwd.focus();
                    return false;
		}
	}

	return true;
}

function checkRegister(modulo){
    
    var filter_username = /^([\w\_\.]{4,20})+$/;
    var filter_password = /^([\w]{4,12})+$/;
      
    var nome=modulo.nome.value;
    var cognome=modulo.cognome.value;
    var username=modulo.username.value;
    var password=modulo.pwd.value;
    var email=modulo.eMail.value;
  
    var errore=document.getElementById("erroreDati");
    
    modulo.nome.style.border="";
    modulo.cognome.style.border="";
    modulo.username.style.border="";
    modulo.pwd.style.border="";
    modulo.eMail.style.border="";
    
    if (nome==""){
        modulo.nome.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.nome.focus();
        return false;
    }
    if (cognome==""){
        modulo.cognome.style.border="1px solid red";
        modulo.cognome.focus();
        errore.innerHTML="Errore nell'inserimento dei dati";
        return false;
    }
    if (username=="" || !filter_username.test(username)){
            modulo.username.style.border="1px solid red";
            errore.innerHTML="Errore nell'inserimento dei dati";
            modulo.username.focus();
            return false; 
    }
    if (password==" " || !filter_password.test(password)){
        modulo.pwd.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.pwd.focus();
        return false; 
    }
    if (email=="" || !checkEmail(email)){
          modulo.eMail.style.border="1px solid red";
          errore.innerHTML="Errore nell'inserimento dei dati";
          modulo.eMail.focus();
          return false; 
    }
    return true;
}


function checkProfile(modulo){
    
    
    var filter_password = /^([\w]{4,12})+$/;
      
    var nome=modulo.nome.value;
    var cognome=modulo.cognome.value;
    var oldpwd=modulo.oldpwd.value;
    var password=modulo.pwd.value;
    var conferma=modulo.confermapwd.value;
    var email=modulo.eMail.value;
  
    var errore=document.getElementById("erroreDati");
    
    modulo.nome.style.border="";
    modulo.cognome.style.border="";
    modulo.oldpwd.style.border="";
    modulo.pwd.style.border="";
    modulo.confermapwd.style.border="";
    modulo.eMail.style.border="";
    
    if (nome==""){
        modulo.nome.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.nome.focus();
        return false;
    }
    if (cognome==""){
        modulo.cognome.style.border="1px solid red";
        modulo.cognome.focus();
        errore.innerHTML="Errore nell'inserimento dei dati";
        return false;
    }
    if (oldpwd=="" || !filter_password.test(oldpwd)){
            modulo.oldpwd.style.border="1px solid red";
            errore.innerHTML="Errore nell'inserimento dei dati";
            modulo.oldpwd.focus();
            return false; 
    }
    if (password=="" || !filter_password.test(password)){
        modulo.pwd.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.pwd.focus();
        return false; 
    }
    if (conferma!=password){
        modulo.pwd.style.border="1px solid red";
        errore.innerHTML="Le password sono diverse";
        modulo.pwd.focus();
        return false; 
    }
    if (email=="" || !checkEmail(email)){
          modulo.eMail.style.border="1px solid red";
          errore.innerHTML="Errore nell'inserimento dei dati";
          modulo.eMail.focus();
          return false; 
    }
    return true;
}

function checkPlatform(modulo){
    
    var platform=modulo.piattaforma.value;
    var errore=document.getElementById("erroreDati");
    if (platform==""){
        modulo.piattaforma.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.piattaforma.focus();
        return false; 
    }
    return true;

}

function checkVideogame(modulo){
    
    
    if (!click)
        return true;
    click=false;
    
    //estraggo i dati dalla form
    var nome=modulo.nome.value;
    var genere=modulo.genere.value;
    var numGiocatori=modulo.numGiocatori.value;
    var svil=modulo.sviluppatore.value;
    var dist=modulo.distributore.value;
    
    //risetto i bordi originari
    modulo.nome.style.border="";
    modulo.genere.style.border="";
    modulo.numGiocatori.style.border="";
    modulo.sviluppatore.style.border="";
    modulo.distributore.style.border="";
    
    
    
    var errore=document.getElementById("erroreDati");
    
    if (nome==""){
        modulo.nome.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.nome.focus();
        return false; 
    }
    if (genere==""){
        modulo.genere.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.genere.focus();
        return false; 
    }
    if (numGiocatori=="" || isNaN(numGiocatori)){
        modulo.numGiocatori.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.numGiocatori.focus();
        return false; 
    }
    if (svil==""){
        modulo.sviluppatore.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.sviluppatore.focus();
        return false; 
    }
    if (dist==""){
        modulo.distributore.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.distributore.focus();
        return false; 
    }
    return true;

}


function checkNewArticle(modulo){
    
    //estraggo i dati dalla form
    var nome=modulo.nome.value;
    var descrizione=modulo.descrizione.value;
    var prezzo=modulo.prezzo.value;
    var disp=modulo.disponibilita.value;
    var sconti=modulo.sconti.value;
    var percorso=modulo.pathImmagine.value;
    var videogame=modulo.idVideogame.value;
    
    //risetto i bordi originari
    modulo.nome.style.border="";
    modulo.descrizione.style.border="";
    modulo.prezzo.style.border="";
    modulo.disponibilita.style.border="";
    modulo.sconti.style.border="";
    modulo.pathImmagine.style.border="";
    modulo.idVideogame.style.border="";
    
    var errore=document.getElementById("erroreDati");
    
    if (nome==""){
        modulo.nome.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.nome.focus();
        return false; 
    }
    if (videogame==""){
        modulo.idVideogame.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.idVideogame.focus();
        return false; 
    }
    if (descrizione==""){
        modulo.descrizione.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.descrizione.focus();
        return false; 
    }
    if (prezzo=="" || isNaN(prezzo)|| parseFloat(prezzo)<=0){
        modulo.prezzo.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.prezzo.focus();
        return false; 
    }
    if (disp=="" || isNaN(disp) || parseInt(disp)<0){
        modulo.disponibilita.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.disponibilita.focus();
        return false; 
    }
    if (sconti=="" || isNaN(sconti) || parseInt(sconti)<0 || parseInt(sconti)>90){
        modulo.sconti.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.sconti.focus();
        return false; 
    }
    if (percorso==""){
        modulo.pathImmagine.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.pathImmagine.focus();
        return false; 
    }
    return true;

}

function checkMsg(modulo){
    
    //estraggo i dati dalla form
    var msg=modulo.contenutoMessaggio.value;
    var dest=modulo.destinatariSelezionati;
    var check=false;
    var errore=document.getElementById("erroreDati");
    
    modulo.contenutoMessaggio.style.border="";
    
    if (msg==""){
        modulo.contenutoMessaggio.style.border="1px solid red";
        errore.innerHTML="Messaggio vuoto";
        modulo.contenutoMessaggio.focus();
        return false; 
    }
    
    for (var index=0;index<dest.length;index++){
        if (dest[index].checked) check=true;
    }
    if (!check){
        
        errore.innerHTML="Nessun destinatario selezionato";
       
        return false; 
    }
    return true;
}

function checkNews(modulo){
    
     //estraggo i dati dalla form
    var titolo=modulo.titolo.value;
    var testo=modulo.testo.value;
    var img=modulo.immaginePath.value;
    var nPiat=modulo.numeroPiatt.value;
    var check=false;
    
    //risetto i bordi originari
    modulo.titolo.style.border="";
    modulo.testo.style.border="";
    modulo.immaginePath.style.border="";
   
    var errore=document.getElementById("erroreDati");
    
    if (titolo==""){
        modulo.titolo.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.titolo.focus();
        return false; 
    }
    
    if (testo==""){
        modulo.testo.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.testo.focus();
        return false; 
    }    
    if (img==""){
        modulo.immaginePath.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.immaginePath.focus();
        return false; 
    }

    for (var i=1;i<=nPiat;i++){
        if (document.getElementById("inlineCheckbox"+i).checked)
            check=true;
    }
    if (!check)
        errore.innerHTML="Seleziona una piattaforma";
    
    return check;
}

function checkInternal(modulo){
    if (!click){
        return true;
    }
    click=false;
     //estraggo i dati dalla form
    var titolo=modulo.titolo.value;
    var testo=modulo.testo.value;
    
    var videogame=modulo.videogiochi.value;
    var nImm=modulo.numeroImm.value;
    var nPro=modulo.numeroPro.value;
    var nContro=modulo.numeroContro.value;
    var i;
    
    //risetto i bordi originari
    modulo.titolo.style.border="";
    modulo.videogiochi.style.border="";
    modulo.testo.style.border="";
   
    for ( i=1;i<=nImm;i++)
        document.getElementById("inputPath"+i).style.border="";
    for ( i=1;i<=nPro;i++)
        document.getElementById("inputPro"+i).style.border="";
    for ( i=1;i<=nContro;i++)
        document.getElementById("inputContro"+i).style.border="";
   
   
    var errore=document.getElementById("erroreDati");
    
    if (titolo==""){
        modulo.titolo.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.titolo.focus();
        return false; 
    }
    if (videogame==""){
        modulo.videogiochi.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.videogiochi.focus();
        return false; 
    }
    
    if (testo.trim()==""){ 
        modulo.testo.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.testo.focus();
        return false; 
    }
  
    for (i=1;i<=nImm;i++) 
        if (document.getElementById("inputPath"+i).value==""){
            document.getElementById("inputPath"+i).style.border="1px solid red";
            errore.innerHTML="Errore nell'inserimento dei dati";
            document.getElementById("inputPath"+i).focus();
            return false; 
        }
       
    for ( i=1;i<=nPro;i++)
        if (document.getElementById("inputPro"+i).value==""){
            document.getElementById("inputPro"+i).style.border="1px solid red";
            errore.innerHTML="Errore nell'inserimento dei dati";
            document.getElementById("inputPro"+i).focus();
            return false; 
        }
    for ( i=1;i<=nContro;i++)
        if (document.getElementById("inputContro"+i).value==""){
            document.getElementById("inputContro"+i).style.border="1px solid red";
            errore.innerHTML="Errore nell'inserimento dei dati";
            document.getElementById("inputContro"+i).focus();
            return false; 
        }
    
    return true;
}

function checkExternal(modulo){
    
    
    
  //estraggo i dati dalla form
    var url=modulo.url.value;
    var voto=modulo.voto.value;
    var scala=modulo.scala.value;
 
    var videogame=modulo.videogiochi.value;
    
    //risetto i bordi originari
    modulo.url.style.border="";
    modulo.voto.style.border="";
    modulo.scala.style.border="";
 
    modulo.videogiochi.style.border="";
    
    var errore=document.getElementById("erroreDati");
    
    if (videogame==""){
        modulo.videogiochi.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.videogiochi.focus();
        return false; 
    }
    if (url==""){
        modulo.url.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.url.focus();
        return false; 
    }
    if (voto==""|| isNaN(voto)|| parseInt(voto)<=0 ){
        modulo.voto.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.voto.focus();
        return false; 
    }
    if (scala=="" || isNaN(scala)|| parseInt(scala)<=0){
        modulo.scala.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.scala.focus();
        return false; 
    }
    if (parseInt(voto)>parseInt(scala)){
        modulo.voto.style.border="1px solid red";
        errore.innerHTML="Il voto deve essere minore della scala di valutazione";
        modulo.voto.focus();
        return false; 
    }
    return true;
}

function checkEditExternal(modulo){
    
     modulo.voto.style.border="";
    modulo.scala.style.border="";
    
    var voto=modulo.voto.value;
    var scala=modulo.scala.value;
    
     var errore=document.getElementById("erroreDati");
     
    if (voto==""|| isNaN(voto)|| parseInt(voto)<=0 ){
        modulo.voto.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.voto.focus();
        return false; 
    }
    if (scala=="" || isNaN(scala)|| parseInt(scala)<=0){
        modulo.scala.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.scala.focus();
        return false; 
    }
    if (parseInt(voto)>parseInt(scala)){
        modulo.voto.style.border="1px solid red";
        errore.innerHTML="Il voto deve essere minore della scala di valutazione";
        modulo.voto.focus();
        return false; 
    }
    
}


function checkUsed(modulo){
    
    //estraggo i dati dalla form
    var nome=modulo.nomeArtUsato.value;
    var descrizione=modulo.descrizioneArtUsato.value;
    var prezzo=modulo.prezzoArtUsato.value;
    var commento=modulo.commentoArtUsato.value;
    var percorso=modulo.pathImmagine.value;
    
    //risetto i bordi originari
    modulo.nomeArtUsato.style.border="";
    modulo.descrizioneArtUsato.style.border="";
    modulo.prezzoArtUsato.style.border="";
    modulo.commentoArtUsato.style.border="";
    modulo.pathImmagine.style.border="";
    
    var errore=document.getElementById("erroreDati");
    
    if (nome==""){
        modulo.nomeArtUsato.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.nomeArtUsato.focus();
        return false; 
    }
    
    if (descrizione==""){
        modulo.descrizioneArtUsato.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.descrizioneArtUsato.focus();
        return false; 
    }
    if (prezzo=="" || isNaN(prezzo)|| parseFloat(prezzo)<=0){
        modulo.prezzoArtUsato.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.prezzoArtUsato.focus();
        return false; 
    }
    if (commento==""){
        modulo.commentoArtUsato.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.commentoArtUsato.focus();
        return false; 
    }
    
    if (percorso==""){
        modulo.pathImmagine.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.pathImmagine.focus();
        return false; 
    }
    return true;

}



function checkEditUsed(modulo){
    
    //estraggo i dati dalla form
  
    var descrizione=modulo.descrizione.value;
    var prezzo=modulo.prezzo.value;
    var commento=modulo.commento.value;
    var percorso=modulo.pathImmagine.value;
    
    //risetto i bordi originari
   
    modulo.descrizione.style.border="";
    modulo.prezzo.style.border="";
    modulo.commento.style.border="";
    modulo.pathImmagine.style.border="";
    
    var errore=document.getElementById("erroreDati");
    
   
    if (descrizione==""){
        modulo.descrizione.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.descrizione.focus();
        return false; 
    }
    if (prezzo=="" || isNaN(prezzo)|| parseFloat(prezzo)<=0){
        modulo.prezzo.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.prezzo.focus();
        return false; 
    }
    if (commento==""){
        modulo.commento.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.commento.focus();
        return false; 
    }
    
    if (percorso==""){
        modulo.pathImmagine.style.border="1px solid red";
        errore.innerHTML="Errore nell'inserimento dei dati";
        modulo.pathImmagine.focus();
        return false; 
    }
    return true;

}

function highlightLink(modulo){
    modulo.style.fontSize='15px';
}

function unhighlightLink(modulo){
    modulo.style.fontSize='14px';
}